'use strict';
var vk; // 全局vk实例
// 涉及的表名
// const dbName = {
// 	test: "vk-test", // 测试表
// };
const dbName = "jwc-xsxxgl-obj";
var db = uniCloud.database(); // 全局数据库引用
var _ = db.command; // 数据库操作符
var $ = _.aggregate; // 聚合查询操作符
/**
 * 权限注意：访问以下链接查看
 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#内置权限
 */
var cloudObject = {
	isCloudObject: true, // 标记为云对象模式
	/**
	 * 请求前处理，主要用于调用方法之前进行预处理，一般用于拦截器、统一的身份验证、参数校验、定义全局对象等。
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#before-预处理
	 */
	_before: async function() {
		vk = this.vk; // 将vk定义为全局对象
		// let { customUtil, uniID, config, pubFun } = this.getUtil(); // 获取工具包
	},
	/**
	 * 请求后处理，主要用于处理本次调用方法的返回结果或者抛出的错误
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#after-后处理
	 */
	_after: async function(options) {
		let { err, res } = options;
		if (err) {
			return; // 如果方法抛出错误，直接return;不处理
		}
		return res;
	},
	/**
	 * 批量审核新媒体任务函数 
	 * @url admin/gsxy/jwc-kqgl/jwc-xsxxgl-obj.deletePlWxryWzLists 前端调用的url参数地址
	 */
	deletePlWxryWzLists: async function(data) {
		//let { uid } = this.getClientInfo(); // 获取客户端信息
		//let userInfo = await this.getUserInfo(); // 获取当前登录的用户信息s
		//console.log("请求参数", data);
		
		// 业务逻辑开始-----------------------------------------------------------
		let res = { code: 0, msg: '' };
		let {_ids} = data;
		// 参数非空检测
		if (vk.pubfn.isNullOne(_ids)) {
			return { code: -1, msg: '参数错误' };
		}

		//1.批量删除
		// 返回被删除的记录条数
		res.num = await vk.baseDao.del({
		  dbName:dbName,
		  whereJson:{
			_id:_.in(_ids)
		  }
		});

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数
	 * @url admin/gsxy/jwc-kqgl/jwc-xsxxgl-obj.deleteWxryWzListOne 前端调用的url参数地址
	 */
	deleteWxryWzListOne: async function(data) {
		let { uid, filterResponse, originalParam } = this.getClientInfo(); // 获取客户端信息
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		//console.log("请求参数", data);
		// 业务逻辑开始-----------------------------------------------------------
		// 这里id不传默认设置成"___" 是为了防止因未传_id导致误删所有数据.
		let { _id } = data;
		if(vk.pubfn.isNull(_id)){
			return { code : -1, msg : 'id不能为空' };
		}
		res.num = await vk.baseDao.deleteById({
			dbName,
			id:_id
		});
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数 学生考勤数据add
	 * @url admin/gsxy/jwc-kqgl/jwc-xsxxgl-obj.updateWxryWzListOne 前端调用的url参数地址
	 */
	updateWxryWzListOne: async function(data) {
		let { uid, filterResponse, originalParam } = this.getClientInfo(); // 获取客户端信息
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		//console.log("请求参数", data);
		let {kq,keshiht,bjinfo,wxinfo,xm,sfzh,datazt,keshi,xsyczt,xsycztbz,xsycsj} = data;
		//res.data = data;
		let kqclass = ''
		let keshicont = 0
		if(keshi== '早自习' || keshi== '晚自习' ){
			keshicont = 1
		}else if(keshi== '1节课'){
			keshicont = 1
		}else if(keshi== '2节课'){
			keshicont = 2
		}else if(keshi== '3节课'){
			keshicont = 3
		}else if(keshi== '4节课'){
			keshicont = 4
		}else if(keshi== '5节课'){
			keshicont = 5
		}else if(keshi== '6节课'){
			keshicont = 6
		}else if(keshi== '7节课'){
			keshicont = 7
		}else if(keshi== '8节课'){
			keshicont = 8
		}else if(keshi== '9节课'){
			keshicont = 9
		}else if(keshi== '10节课'){
			keshicont = 10
		}
		
		if(xsyczt == '迟到'){
			kqclass = 'content bg-green shadow-blur'
		}else if(xsyczt == '早退'){
			kqclass = 'content bg-cyan shadow-blur'
		}else if(xsyczt == '病假'){
			kqclass = 'content bg-blue shadow-blur'
		}else if(xsyczt == '旷课'){
			kqclass = 'content bg-red shadow-blur'
		}else if(xsyczt == '事假'){
			kqclass = 'content bg-orange shadow-blur'
		}else if(xsyczt == '团委事假'){
			kqclass = 'content bg-yellow shadow-blur'
		}else{
			kqclass = 'content bg-yellow shadow-blur'
		}

		//迟到或早退3次 算一次旷课
		//1.记录次数
		if(xsyczt == '迟到' || xsyczt == '早退'){
			await vk.baseDao.add({
			  dbName:"jwc-xskqgl-jl-obj",
			  dataJson:{
				xm: xm,
				sfzh: sfzh,
				datazt: datazt,
				keshi: keshi,
				xsyczt: xsyczt,
				xsycztbz: xsycztbz,
				xsycsj:xsycsj,
				kqclass:kqclass,
				keshiht:keshiht,
				kq:kq,
				xskqgl:'1'
			  }
			});
		}
		//2.查询记录次数
			let num = await vk.baseDao.count({
			  dbName:"jwc-xskqgl-jl-obj",// 表名
			  whereJson:{ // 条件
				sfzh:sfzh
			  }
			});
		
		//3.判断次数超过3次算一次旷课并删除之前的数据3次记录
		if(num >= 3){
			//1.删除之前数据总和
			await vk.baseDao.del({
			  dbName:"jwc-xskqgl-jl-obj",
			  whereJson:{
			    sfzh:sfzh
			  }
			});
			//2.添加一次旷课信息
			await vk.baseDao.add({
			  dbName:"jwc-xskqgl-obj",// 表名
			  dataJson:{ // 需要新增的数据 json格式
				bjinfo: bjinfo,
				wxinfo: wxinfo,
				xm: xm,
				sfzh: sfzh,
				datazt: datazt,
				keshi: '1节课',
				xsyczt: "旷课",
				xsycztbz: '系统累计三次早退或是迟到算旷课处理',
				xsycsj:xsycsj,
				kqclass:kqclass,
				keshiht:'1节课',
				kq:kq,
				keshicont:1
			  }
			});
		}

		await vk.baseDao.add({
		  dbName:"jwc-xskqgl-obj",// 表名
		  dataJson:{ // 需要新增的数据 json格式
		    bjinfo: bjinfo,
			wxinfo: wxinfo,
			xm: xm,
			sfzh: sfzh,
			datazt: datazt,
			keshi: keshi,
			xsyczt: xsyczt,
			xsycztbz: xsycztbz,
			xsycsj:xsycsj,
			kqclass:kqclass,
			keshiht:keshiht,
			kq:kq,
			keshicont:keshicont
		  }
		});

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数
	 * @url admin/gsxy/jwc-kqgl/jwc-xsxxgl-obj.addWxryWzListOne 前端调用的url参数地址
	 */
	addWxryWzListOne: async function(data) {
		let { uid, filterResponse, originalParam } = this.getClientInfo(); // 获取客户端信息
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		if(data._id){
			let updateId = data._id
			Reflect.deleteProperty(data,'_id')
			// 此处应该还需要判断下mobile和username是否已存在等参数校验逻辑和
			//let register_date = new Date().getTime();
			res.newInfo = await vk.baseDao.updateById({
			  dbName:dbName,
			  id:updateId,
			  dataJson:{
			    ...data
			  }
			});
		}else{
			//console.log("请求参数", data);
			res.id = await vk.baseDao.add({
			  dbName:dbName,// 表名
			  dataJson:{ // 需要新增的数据 json格式
				...data
			  }
			});
		}

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数
	 * @url admin/gsxy/jwc-kqgl/jwc-xsxxgl-obj.getWxryWzListList 前端调用的url参数地址 
	 */
	getWxryWzListList: async function(data) {
		//let { uid, filterResponse, originalParam } = this.getClientInfo(); // 获取客户端信息
		let userInfo = await this.getUserInfo(); // 获取当前登录的用户信息
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		const datainff = ['6544652fbd022034f4ef00a2','64646f6528064a758746aa09','655daa847ad52d2a064559cd']
		let bjinfo = {
			userid:userInfo._id
		}
		if(datainff.includes(userInfo._id)){
			res = await vk.baseDao.getTableData({
			  dbName,
			  data
			});
		}else{
			res = await vk.baseDao.getTableData({
			  dbName,
			  data,
				whereJson:{
				  bjinfo:bjinfo
				}
			});
		}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数
	 * @url admin/gsxy/jwc-kqgl/jwc-xsxxgl-obj.updatexsjrztgl 前端调用的url参数地址
	 */
	updatexsjrztgl: async function(data) {
		let res = { code: 0, msg: '' };
		let { uid } = this.getClientInfo(); // 获取客户端信息jwc-xsxxgl-sjb-obj
		// 业务逻辑开始-----------------------------------------------------------
		// res.num = db.collection('jwc-xsxxgl-sjb-obj')
		// //.where({jrzt:'1'})
		// .where({bm: "中职部"})
		// .update({jrzt:'0'})

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
};

module.exports = cloudObject;
